package com.xx.rpc.core.registry;

import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

/**
 * 应用登记
 */
public abstract class Register {

    /**
     * 启动
     */
    public abstract void start(Map<String, String> param);

    /**
     * 启动
     */
    public abstract void stop();


    /**
     * 注册多个服务
     *
     * @param keys      service key
     * @param value     service value/ip:port
     * @return 结果
     */
    public abstract boolean registry(Set<String> keys, String value);


    /**
     * 移除多个服务
     *
     * @param keys 服务key
     * @param value 值
     * @return 结果
     */
    public abstract boolean remove(Set<String> keys, String value);

    /**
     * 销毁多个服务
     *
     * @param keys key集合
     * @return 销毁的列表
     */
    public abstract Map<String, TreeSet<String>> discovery(Set<String> keys);

    /**
     * 销毁单个服务
     *
     * @param key   service key
     * @return      service value/ip:port
     */
    public abstract TreeSet<String> discovery(String key);
}
